package com.example.study_mybatis.mapper;

import com.example.study_mybatis.model.User;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface UserMapper2 {
    User selectById(Integer id);

    User selectById2(Integer id);

    User selectById3(Integer id);

    List<User> list();

    List<User> listWithAddress();

    /**
     * 根据username进行模糊查询
     * 根据年龄进行排序，有时候升序，有时候降序灵活控制
     *
     * @return
     */
    List<User> listByCondition(@Param("username") String username, @Param("orderBy") String orderBy);

    List<User> listByUser(User user);

    List<User> listByUser2(User user);

    int update(User user);

    List<User> listByUserOrderBy(@Param("user") User user, @Param("orderBy") String orderBy);


    int update2(User user);

    // foreach解决的问题
    // 1. 批量插入
    // 2. in查询
    int batchInsert(@Param("list") List<User> list);

    int batchDelete(@Param("idList") List<Integer> idList);

    int insert(User user);


    @Select("select * from user where username = #{username}")
    List<User> selectByUsername(@Param("username") String username);

    List<User> page(@Param("start") Integer start, @Param("pageSize") Integer pageSize);
    int count();
}
